package com.proposition.user.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.proposition.commons.model.Role;
import com.proposition.commons.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

@Mapper
public interface UserMapper extends BaseMapper<User> {

	/**
	 * 	通过用户名称获取用户信息
	 * @param username 用户名
	 * @return
	 */
	User findByName(@Param("username") String username);
	/**
	 * 通过Id获取用户信息
	 * @param userId
	 * @return
	 */
	User findById(@Param("userId") String userId);

	/**
	 * 获取用户所对应角色
	 * @param userName
	 * @return
	 */
	Set<String> findRoleByUserName(@Param("userName") String userName);
	/**
	 * 通过角色获取用户权限
	 * @param userName
	 * @return
	 */
	Set<String> findPermissionByRole(@Param("userName") String userName);

	/**
	 * 获取用户列表
	 * @return
	 */
	List<User> findUserList();

	/**
	 * 获取角色列表
	 * @return
	 */
	List<Role> findRoleList();

	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	boolean addUser(@Param("user") User user);

	/**
	 * 判断用户名是否存在
	 * @param userName
	 * @return
	 */
	Integer checkUserExist(@Param("userName") String userName);

	/**
	 * 修改用户状态为禁用
	 * @param userId
	 * @return
	 */
	boolean deleteUserById(@Param("userId") String userId);


	/***
	 * 修改用户密码
	 * @param userId 用户Id
	 * @param newPassword 新密码
	 * @return
	 */
	boolean changePassword(@Param("userId") String userId, @Param("newPassword") String newPassword);

	/**
	 * 修改用户资料
	 * @return
	 */
	boolean updateUserInfo(@Param("userId") String userId, @Param("realName") String realName, @Param("password") String password, @Param("roleId") String roleId, @Param("telephone") String telephone);
	/**
	 * 根据角色id删除用户
	 * @param ids
	 * @return
	 */
	boolean deleteUserByRoleIds(@Param("ids") List<Integer> ids);

}


